<?php
/**
 * 汇友科技
 * @copyright (c) 2017 http://www.huiyou365.net All rights reserved.
 * @author: Creatint <creatint@163.com>
 */

namespace Admin\Model;

use Common\Model\Model;
use Think\Page;

class CategoryModel extends Model{


    protected $_validate = array(
        array('name', 'require', '标识不能为空', self::EXISTS_VALIDATE, 'regex', self::MODEL_BOTH),
        array('name', '', '标识已经存在', self::EXISTS_VALIDATE, 'unique', self::MODEL_BOTH),
        array('title', 'require', '名称不能为空', self::EXISTS_VALIDATE , 'regex', self::MODEL_BOTH),
    );

    protected $_auto = array(
//        array('name', 'strtoupper', self::MODEL_BOTH, 'function'),
        array('created_at', NOW_TIME, self::MODEL_INSERT),
        array('updated_at', NOW_TIME, self::MODEL_BOTH),
    );




    public function remove($id){
        if ( !$id ) {
            $this->error = '待删除项为空';
            return false;
        }
        $map = [
            'id'=>[
                'IN',
                $id
            ]
        ];
        if ( $this->where($map)->delete() ) {
            S('DB_CONFIG', null);
            return true;
        } else {
            return false;
        }
    }


    /**
     * 获取分类树，指定分类则返回指定分类极其子分类，不指定则返回所有分类树
     * @param  integer $id    分类ID
     * @param  boolean $field 查询字段
     * @return array          分类树
     * @author 麦当苗儿 <zuojiazi@vip.qq.com>
     */
    public function getTree($id = 0, $field = true, $order = "sort ASC,id ASC"){
        /* 获取当前分类信息 */
        if($id){
            $info = $this->get(['id'=>$id]);
            $id   = $info['id'];
        }

        /* 获取所有分类 */
        $map  = array('status' => array('gt', -1));

        $list = $this->get([], $field, $order, false);
//        $list = $this->field($field)->where($map)->order($order)->select();
        $list = list_to_tree($list, $pk = 'id', $pid = 'pid', $child = '_', $root = $id);

        /* 获取返回数据 */
        if(isset($info)){ //指定分类则返回当前分类极其子分类
            $info['_'] = $list;
        } else { //否则返回所有分类
            $info = $list;
        }

        return $info;
    }



}